package com.example.mybatisplusdemo.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.example.mybatisplusdemo.enums.SexEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
// @TableName("t_user") 已经在配置文件配置全部表的前缀 "t_"
public class User {
    /*
     * IdType.ASSIGN_ID:默认，基于雪花算法的策略生成数据id，与数据库id是否设置自增无关
     * IdType.AUTO：使用数据库的自增策略，注意，该类型请确保数据库设置了id自增，否则无效
     * */
    @TableId(value = "id", type = IdType.ASSIGN_ID) //也可以在配置文件中配置全局的主键生成策略
    private Long uid;
    @TableField("username")  //数据库中的表字段为【username】，而类中的属性为【name】，这里需要设置属性映射 @TableField
    private String name;
    private Integer age;
    private String email;

    private SexEnum sex;


    //若实体类中的属性使用的是驼峰命名风格，而表中的字段使用的是下划线命名风格,如数据库为【is_deleted】,此时MyBatis-Plus会自动将下划线命名风格转化为驼峰命名风格
    @TableLogic //逻辑删除注解，假删除，将对应数据中代表是否被删除字段的状态修改为“被删除状态：1”，之后在数据库中仍旧能看到此条数据记录
    private Integer isDeleted;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;


}
